#ifndef IACCOUNT_HH
#define IACCOUNT_HH

#include <string>
#include <vector>

class Transaction;

class IAccount {
public:
    virtual ~IAccount() = default;
    virtual bool transfer(IAccount& destination, double amount, const std::string& note) = 0;
    virtual std::string getAccountId() const = 0;
    virtual double getBalance() const = 0;
    virtual void addTransaction(const Transaction& transaction) = 0;
    virtual const std::vector<Transaction>& getTransactions() const = 0;
    virtual std::string getOwnerName() const = 0;
};

#endif